﻿
namespace iopt.solvency.pillarone.client.Web
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.ComponentModel.DataAnnotations;
    using System.Data.Objects.DataClasses;
    using System.Linq;
    using System.ServiceModel.DomainServices.Hosting;
    using System.ServiceModel.DomainServices.Server;


    // MetadataTypeAttribute identifie EntityDefinitionMetadata comme la classe
    // qui comporte des métadonnées supplémentaires pour la classe EntityDefinition.
    [MetadataTypeAttribute(typeof(EntityDefinition.EntityDefinitionMetadata))]
    public partial class EntityDefinition
    {

        // Cette classe vous permet d'attacher des attributs personnalisés aux propriétés 
        // de la classe EntityDefinition.
        //
        // Par exemple, le code suivant marque la propriété Xyz en tant que
        // propriété requise et spécifie le format pour les valeurs valides :
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class EntityDefinitionMetadata
        {

            // Les classes de métadonnées ne sont pas conçues pour être instanciées.
            private EntityDefinitionMetadata()
            {
            }

            public int ID { get; set; }

            public ModelFieldDefinition KeyModelFieldDefinition { get; set; }

            public Nullable<int> ModelFieldDefinitionID { get; set; }

            public EntityCollection<ModelFieldDefinition> ModelFieldDefinitions { get; set; }

            public string Name { get; set; }
        }
    }

    // MetadataTypeAttribute identifie ModelDefinitionMetadata comme la classe
    // qui comporte des métadonnées supplémentaires pour la classe ModelDefinition.
    [MetadataTypeAttribute(typeof(ModelDefinition.ModelDefinitionMetadata))]
    public partial class ModelDefinition
    {

        // Cette classe vous permet d'attacher des attributs personnalisés aux propriétés 
        // de la classe ModelDefinition.
        //
        // Par exemple, le code suivant marque la propriété Xyz en tant que
        // propriété requise et spécifie le format pour les valeurs valides :
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ModelDefinitionMetadata
        {

            // Les classes de métadonnées ne sont pas conçues pour être instanciées.
            private ModelDefinitionMetadata()
            {
            }

            public int ID { get; set; }

            public EntityCollection<ModelFieldDefinition> ModelFieldDefinitions { get; set; }

            public string Name { get; set; }

            public Project Project { get; set; }

            public int ProjectID { get; set; }
        }
    }

    // MetadataTypeAttribute identifie ModelFieldDefinitionMetadata comme la classe
    // qui comporte des métadonnées supplémentaires pour la classe ModelFieldDefinition.
    [MetadataTypeAttribute(typeof(ModelFieldDefinition.ModelFieldDefinitionMetadata))]
    public partial class ModelFieldDefinition
    {

        // Cette classe vous permet d'attacher des attributs personnalisés aux propriétés 
        // de la classe ModelFieldDefinition.
        //
        // Par exemple, le code suivant marque la propriété Xyz en tant que
        // propriété requise et spécifie le format pour les valeurs valides :
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ModelFieldDefinitionMetadata
        {

            // Les classes de métadonnées ne sont pas conçues pour être instanciées.
            private ModelFieldDefinitionMetadata()
            {
            }

            public EntityCollection<EntityDefinition> EntityDefinitions { get; set; }

            public int ID { get; set; }

            public EntityCollection<EntityDefinition> KeyEntityDefinitions { get; set; }

            public ModelDefinition ModelDefinition { get; set; }

            public int ModelDefinitionID { get; set; }

            public string Name { get; set; }

            public string Type { get; set; }

            public EntityCollection<TypeDefinition> TypeDefinitions { get; set; }
        }
    }

    // MetadataTypeAttribute identifie ProjectMetadata comme la classe
    // qui comporte des métadonnées supplémentaires pour la classe Project.
    [MetadataTypeAttribute(typeof(Project.ProjectMetadata))]
    public partial class Project
    {

        // Cette classe vous permet d'attacher des attributs personnalisés aux propriétés 
        // de la classe Project.
        //
        // Par exemple, le code suivant marque la propriété Xyz en tant que
        // propriété requise et spécifie le format pour les valeurs valides :
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class ProjectMetadata
        {

            // Les classes de métadonnées ne sont pas conçues pour être instanciées.
            private ProjectMetadata()
            {
            }

            public int ID { get; set; }

            public EntityCollection<ModelDefinition> ModelDefinitions { get; set; }

            public string Name { get; set; }

            public EntityCollection<Workspace> Workspaces { get; set; }
        }
    }

    // MetadataTypeAttribute identifie TypeDefinitionMetadata comme la classe
    // qui comporte des métadonnées supplémentaires pour la classe TypeDefinition.
    [MetadataTypeAttribute(typeof(TypeDefinition.TypeDefinitionMetadata))]
    public partial class TypeDefinition
    {

        // Cette classe vous permet d'attacher des attributs personnalisés aux propriétés 
        // de la classe TypeDefinition.
        //
        // Par exemple, le code suivant marque la propriété Xyz en tant que
        // propriété requise et spécifie le format pour les valeurs valides :
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class TypeDefinitionMetadata
        {

            // Les classes de métadonnées ne sont pas conçues pour être instanciées.
            private TypeDefinitionMetadata()
            {
            }

            public int ID { get; set; }

            public EntityCollection<ModelFieldDefinition> ModelFieldDefinitions { get; set; }

            public string Name { get; set; }
        }
    }

    // MetadataTypeAttribute identifie WorkspaceMetadata comme la classe
    // qui comporte des métadonnées supplémentaires pour la classe Workspace.
    [MetadataTypeAttribute(typeof(Workspace.WorkspaceMetadata))]
    public partial class Workspace
    {

        // Cette classe vous permet d'attacher des attributs personnalisés aux propriétés 
        // de la classe Workspace.
        //
        // Par exemple, le code suivant marque la propriété Xyz en tant que
        // propriété requise et spécifie le format pour les valeurs valides :
        //    [Required]
        //    [RegularExpression("[A-Z][A-Za-z0-9]*")]
        //    [StringLength(32)]
        //    public string Xyz { get; set; }
        internal sealed class WorkspaceMetadata
        {

            // Les classes de métadonnées ne sont pas conçues pour être instanciées.
            private WorkspaceMetadata()
            {
            }

            public int ID { get; set; }

            public string Name { get; set; }

            public EntityCollection<Project> Projects { get; set; }
        }
    }
}
